package com.itheima.convert;

import com.itheima.dto.message.MessageDto;
import com.itheima.entity.Kind;
import com.itheima.entity.Message;
import com.itheima.vo.KindVo;
import com.itheima.vo.message.MessageBoardVo;
import com.itheima.vo.message.MessageVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <h1>信息转换接口</h1>
 *
 * @author <a href="515857087@qq.com">叶世铭</a>
 * @since 2022/12/2
 */
@Mapper(componentModel = "spring")
public interface MessageConvert {

    /**
     * MessageDto -> Message
     * @param messageDto 发布信息dto
     * @param userId 用户id
     * @param now 时间
     * @return 信息实体
     */
    @Mappings({
            @Mapping(target = "userId", source = "userId"),
            @Mapping(target = "createdAt", source = "now")
    })
    Message messageDtoToMessage(MessageDto messageDto, String userId, LocalDateTime now);

    /**
     * List<Kind> -> List<KindVo>
     * @param list 种类实体
     * @return 信息种类VO
     */
    List<KindVo> toKindVoList(List<Kind> list);

    /**
     * List<Message> -> List<MessageBoardVo>
     * @param list 信息实体
     * @return 信息点赞排行榜vo
     */
    List<MessageBoardVo> toMessageBoardVo(List<Message> list);

    /**
     * Message -> MessageVo
     * @param message 信息实体
     * @return 返回信息vo
     */
    @Mapping(target = "kinds", ignore = true)
    MessageVo toMessageVo(Message message);
}
